package com.gome.axwl.aoc.service.impl;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.gome.axwl.aoc.dao.CsApplyInfoDao;
import com.gome.axwl.aoc.entity.po.CsApplyInfoForListPo;
import com.gome.axwl.aoc.entity.po.CsApplyInfoParmPo;
import com.gome.axwl.aoc.entity.po.CsApplyInfoPo;
import com.gome.axwl.aoc.service.CsApplyinfoService;
import com.gome.datasource.shard.annotation.ReadDatasource;
import com.gome.datasource.shard.annotation.WriteDatasource;

/**
 * @Description: csApplyInfo service实现类
 * @Auther: yinyuxin@gome.com.cn
 * @Date: 2018/7/16 10:45
 */
@Service("csApplyinfoService")
public class CsApplyinfoServiceImpl implements CsApplyinfoService {

    @Autowired
    private CsApplyInfoDao csApplyInfoDao;

    @Override
    @ReadDatasource
    public CsApplyInfoPo queryById(Integer id) {
        return csApplyInfoDao.selectByPrimaryKey(id);
    }

    @Override
    @ReadDatasource
    public CsApplyInfoPo queryWithAssociateById(Integer id) {
        return csApplyInfoDao.selectWithAssociateByPrimaryKey(id);
    }

    @Override
    @WriteDatasource
    public void insert(CsApplyInfoPo csApplyInfoPo) {
        csApplyInfoDao.insertSelective(csApplyInfoPo);
    }

    @Override
    @WriteDatasource
    public void update(CsApplyInfoPo csApplyInfoPo) {
        csApplyInfoDao.updateByPrimaryKeySelective(csApplyInfoPo);
    }

    @Override
    @WriteDatasource
    public void deleteById(Integer id) {
        CsApplyInfoPo csApplyInfoPo=new CsApplyInfoPo();
        csApplyInfoPo.setId(id);
        csApplyInfoPo.setDeleteStatus((byte)0);
        csApplyInfoDao.updateByPrimaryKeySelective(csApplyInfoPo);
    }

    @Override
    @ReadDatasource
    public List<String> querySettleName(String settleName) {
        return csApplyInfoDao.querySettleName(settleName);
    }


    @Override
    @ReadDatasource
    public PageInfo<CsApplyInfoForListPo> queryApplyListForApproval(CsApplyInfoParmPo csApplyInfoParmPo,Integer pageNum,Integer pageSize) {
        PageHelper.startPage(pageNum==null?1:pageNum,pageSize==null?18:pageSize);
        List<CsApplyInfoForListPo> csApplyInfoForListPo = csApplyInfoDao.queryApplyListForApproval(csApplyInfoParmPo);
       PageInfo<CsApplyInfoForListPo> pageInfo=new PageInfo<>(csApplyInfoForListPo);
       return pageInfo;
    }

    @Override
    @ReadDatasource
    public PageInfo<CsApplyInfoPo> queryApplyInfoBySelective(CsApplyInfoPo csApplyInfoPo, Integer pageNum, Integer pageSize) {
        PageHelper.startPage(pageNum==null?1:pageNum,pageSize==null?18:pageSize);
        List<CsApplyInfoPo> csApplyInfoPos = csApplyInfoDao.queryApplyInfoBySelective(csApplyInfoPo);
        PageInfo<CsApplyInfoPo> pageInfo=new PageInfo<>(csApplyInfoPos);
        return pageInfo;
    }

    @Override
    @ReadDatasource
    public List<CsApplyInfoPo> queryApplyInfoForApprovalRemind() {
        return csApplyInfoDao.queryApplyInfoForApprovalRemind();
    }

    @Override
    public List<CsApplyInfoPo> queryByIds(List<Integer> ids) {
        return csApplyInfoDao.queryByIds(ids);
    }


}
